#include <stdint.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/eventfd.h>

int main()
{
    //eventfd是一种事件通知机制
    //具体的解读看板书
    int efd = eventfd(0,EFD_CLOEXEC | EFD_NONBLOCK);
    //返回一个文件描述符用于操作
    if(efd < 0)
    {
        perror("eventfd fail!!\n");
        return -1;
    }
    //对efd的操作也是read/write/close等对文件描述符的操作
    //但是对efd进行IO操作时数据只能是一个8字节的数据。
    uint64_t val = 1;
    write(efd,&val,sizeof(val));
    write(efd,&val,sizeof(val)); 

    uint64_t res = 0;
    read(efd,&res,sizeof(res));

    printf("%ld\n",res);
    return 0;
}